/**
 * \file TreeType.h
 *
 * Asteriskos Compiler 1
 * Written 2010-2011, by Anthony Berlin and Alexander Carlqvist
 *
 * This file is part of ICC.
 *
 * This program is free software: you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */

#ifndef TREE_TYPE_H
#define TREE_TYPE_H

enum TreeType
{
    // Misc tree types.
    TREE_NONE,

    TREE_VAR_DECL,
    TREE_FUNC_DECL,
    TREE_FUNC_DEF,

    TREE_DATATYPE,
    TREE_PARAM_DECL_LIST,
    TREE_PARAM_DECL,

    TREE_IDENT,

    TREE_EQUALITY_EXPR,
    TREE_RELATIONAL_EXPR,
    TREE_LOGICAL_AND_EXPR,
    TREE_LOGICAL_OR_EXPR,
    TREE_LOGICAL_NOT_EXPR,
    TREE_ARITHM_EXPR,
    TREE_ASSIGN_EXPR,
    TREE_CASTING_EXPR,
    TREE_POLARITY_EXPR,

    // Asteriskos tree types.
    TREE_DECLARATION_SEQ,

    TREE_PARAM_TYPE_LIST,
    TREE_DECLARATOR,

    TREE_DECLARED_EXPR,
    TREE_PRIMARY_EXPR,
    TREE_ID_EXPR,
    TREE_LITERAL,

    TREE_FUNC_CALL,
    TREE_PARAM_LIST,

    TREE_CMP_STMT,
    TREE_RETURN_STMT,
    TREE_IF_STMT,
    TREE_ELSE_STMT,
    TREE_WHILE_STMT,
    TREE_BREAK_STMT,
    TREE_CONTINUE_STMT,
    TREE_PUT_STMT,
    TREE_GET_STMT,
    TREE_ASM_DECL,
    TREE_NULL_STMT,

    TREE_SPECIFIER_LIST,
    TREE_SPECIFIER,

    TREE_MODIFIER_LIST,
    TREE_MODIFIER,

    // LISTOR tree types.
    TREE_CODE_BLOCK
};

#endif // TREE_TYPE_H
